package com.atguigu.gmall.product.controller;

import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.model.product.SkuInfo;
import com.atguigu.gmall.model.product.SpuInfo;
import com.atguigu.gmall.product.service.SkuInfoService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequestMapping("/admin/product")
public class SkuInfoController {
    @Autowired
    SkuInfoService skuInfoService;

    /**
     *      *  SPU：录入SPU，平台属性暂时没有参与，录入SKU的时候会有展示.
     *      *  SKU的录入：
     *      *      1、sku的详情：sku_info
     *      *      2、sku的图片：sku_image
     *      *         内容来自spu_image的一部分
     *      *      3、sku的属性
     *      *          3.1）、sku平台属性 : 来源于 base_attr_info  base_attr_value  sku_info
     *      *                 被记录在 sku_attr_value（他是base_attr_info  base_attr_value  sku_info的中间表）   价格： 0-499
     *      *          3.2）、sku销售属性 ：来源于 spu_sale_attr_value
     *      *                 被记录在 sku_sale_attr_value （他是 sku_info spu_sale_attr_value的中间表）
     */

    //http://api.gmall.com/admin/product/saveSkuInfo
    @PostMapping("/saveSkuInfo")
    public Result saveSkuInfo(@RequestBody SkuInfo skuInfo){
        log.info("Sku保存信息：{}" + skuInfo);

        boolean b = skuInfoService.bigSaveSkuInfo(skuInfo);

        return Result.ok();
    }

    /*
    * Sku列表查询
    * */
    //http://api.gmall.com/admin/product/list/{page}/{limit}
    @GetMapping("/list/{page}/{limit}")
    public Result<Page<SkuInfo>> listSkuInfo(
            @PathVariable("page") Long page,
            @PathVariable("limit") Long limit){
        Page<SkuInfo> skuInfoPage = new Page<SkuInfo>(page,limit);
        Page<SkuInfo> infoPage = skuInfoService.page(skuInfoPage);
        return Result.ok(infoPage);
    }

    /*
    * 上架
    * */
    //http://api.gmall.com/admin/product/onSale/{skuId}
    @GetMapping("/onSale/{skuId}")
    public Result onSale(@PathVariable("skuId") Long skuId){
        boolean b = skuInfoService.onSale(skuId);
        return Result.ok();

    }

    /*
    * 下架
    * */
    //http://api.gmall.com/admin/product/cancelSale/{skuId}
    @GetMapping("/cancelSale/{skuId}")
    public Result cancelSale(@PathVariable("skuId") Long skuId){
        boolean b = skuInfoService.cancelSale(skuId);
        return Result.ok();

    }

}
